Why Functional Programming Matters